ListProjectsController   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 21
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 20
dl 0
loc 21
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A get 0 12 1
1
import {
2
  Controller,
3
  Inject,
4
  UseGuards,
5
  Get,
6
  Query,
7
  Render
8
} from '@nestjs/common';
9
import { IQueryBus } from 'src/Application/IQueryBus';
10
import { PaginationDTO } from 'src/Infrastructure/Common/DTO/PaginationDTO';
11
import { IsAuthenticatedGuard } from 'src/Infrastructure/HumanResource/User/Security/IsAuthenticatedGuard';
12
import { WithName } from 'src/Infrastructure/Common/ExtendedRouting/WithName';
13
import { GetProjectsQuery } from 'src/Application/Project/Query/GetProjectsQuery';
14
import { ProjectTableFactory } from '../Table/ProjectTableFactory';
15
import { Pagination } from 'src/Application/Common/Pagination';
16
import { ProjectView } from 'src/Application/Project/View/ProjectView';
17
18
@Controller('app/projects')
19
@UseGuards(IsAuthenticatedGuard)
20
export class ListProjectsController {
21
  constructor(
22
    @Inject('IQueryBus')
23
    private readonly queryBus: IQueryBus,
24
    private tableFactory: ProjectTableFactory
25
  ) {}
26
27
  @Get()
28
  @WithName('crm_projects_list')
29
  @Render('pages/projects/list.njk')
30
  public async get(@Query() paginationDto: PaginationDTO) {
31
    const pagination: Pagination<ProjectView> = await this.queryBus.execute(
32
      new GetProjectsQuery(paginationDto.page, false)
33
    );
34
35
    const table = this.tableFactory.create(pagination.items);
36
37
    return { table, pagination, currentPage: paginationDto.page };
38
  }
39
}
40